#pragma once
#include "SampleBase.h"
#include "glm/glm.hpp"
#include "glm/gtx/quaternion.hpp"
#include "GLTexture.h"
#include <assimp/scene.h>
#include <assimp/postprocess.h>
#include <assimp/cimport.h>
#include <assimp/version.h>
#include <vector>
#include "GLShader.h"
using glm::mat4;
using glm::vec2;
using glm::vec3;
using glm::vec4;
using glm::ivec2;

class CubeMapSample : public SampleBase {
public:
	CubeMapSample();
	virtual ~CubeMapSample();

	virtual void Init() override;
	virtual void Update(float deltatime) override;
	virtual void Render(float aspect) override;
	virtual void OnGUI() override;
	virtual void ShutDown() override;
private:

	struct PerFrameData {
		mat4 model;
		mat4 mvp;
		vec4 cameraPos;
	};

	GLProgram* progModel;
	GLProgram* progCube;

	GLsizeiptr kUniformBufferSize;
	GLuint perFrameDataBuffer;
	size_t indiceSize = 0;
	GLuint dataVertices;
	GLuint vao;
	GLuint dataIndices;
};